import { IPSAppPortletCat } from '../control/ipsapp-portlet-cat';
import { IPSAppDEACMode } from './ipsapp-deacmode';
import { IPSAppDEAction } from './ipsapp-deaction';
import { IPSAppDEDataExport } from './ipsapp-dedata-export';
import { IPSAppDEDataImport } from './ipsapp-dedata-import';
import { IPSAppDEDataSet } from './ipsapp-dedata-set';
import { IPSAppDEField } from './ipsapp-defield';
import { IPSAppDELogic } from './ipsapp-delogic';
import { IPSAppDEMethod } from './ipsapp-demethod';
import { IPSAppDEMethodDTO } from './ipsapp-demethod-dto';
import { IPSAppDEPrint } from './ipsapp-deprint';
import { IPSAppDERS } from './ipsapp-ders';
import { IPSAppDEUIAction } from './ipsapp-deuiaction';
import { IPSAppDEUILogic } from './ipsapp-deuilogic';
import { IPSDER1N } from '../../dataentity/der/ipsder1-n';
import { IPSDEMainState } from '../../dataentity/mainstate/ipsdemain-state';
import { IPSDEOPPriv } from '../../dataentity/priv/ipsdeoppriv';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysImage } from '../../res/ipssys-image';
import { IPSModelObject } from '../../ipsmodel-object';

/**
 *
 * @export
 * @interface IPSAppDataEntity
 */
export interface IPSAppDataEntity extends IPSModelObject {
  /**
   * 实体自填模式集合
   *
   * @type {IPSAppDEACMode[]}
   */
  getAllPSAppDEACModes(): IPSAppDEACMode[] | null;

  findPSAppDEACMode(objKey: any): IPSAppDEACMode | null;

  /**
   * 应用实体行为集合
   *
   * @type {IPSAppDEAction[]}
   */
  getAllPSAppDEActions(): IPSAppDEAction[] | null;

  findPSAppDEAction(objKey: any): IPSAppDEAction | null;

  /**
   * 实体数据导出集合
   *
   * @type {IPSAppDEDataExport[]}
   */
  getAllPSAppDEDataExports(): IPSAppDEDataExport[] | null;

  findPSAppDEDataExport(objKey: any): IPSAppDEDataExport | null;

  /**
   * 实体数据导入集合
   *
   * @type {IPSAppDEDataImport[]}
   */
  getAllPSAppDEDataImports(): IPSAppDEDataImport[] | null;

  findPSAppDEDataImport(objKey: any): IPSAppDEDataImport | null;

  /**
   * 应用实体数据集集合
   *
   * @type {IPSAppDEDataSet[]}
   */
  getAllPSAppDEDataSets(): IPSAppDEDataSet[] | null;

  findPSAppDEDataSet(objKey: any): IPSAppDEDataSet | null;

  /**
   * 应用实体属性集合
   *
   * @type {IPSAppDEField[]}
   */
  getAllPSAppDEFields(): IPSAppDEField[] | null;

  findPSAppDEField(objKey: any): IPSAppDEField | null;

  /**
   * 应用实体逻辑集合
   *
   * @type {IPSAppDELogic[]}
   */
  getAllPSAppDELogics(): IPSAppDELogic[] | null;

  findPSAppDELogic(objKey: any): IPSAppDELogic | null;

  /**
   * 应用实体方法DTO对象集合
   *
   * @type {IPSAppDEMethodDTO[]}
   */
  getAllPSAppDEMethodDTOs(): IPSAppDEMethodDTO[] | null;

  findPSAppDEMethodDTO(objKey: any): IPSAppDEMethodDTO | null;

  /**
   * 应用实体方法集合
   *
   * @type {IPSAppDEMethod[]}
   */
  getAllPSAppDEMethods(): IPSAppDEMethod[] | null;

  findPSAppDEMethod(objKey: any): IPSAppDEMethod | null;

  /**
   * 实体打印集合
   *
   * @type {IPSAppDEPrint[]}
   */
  getAllPSAppDEPrints(): IPSAppDEPrint[] | null;

  findPSAppDEPrint(objKey: any): IPSAppDEPrint | null;

  /**
   * 实体界面行为集合
   *
   * @type {IPSAppDEUIAction[]}
   */
  getAllPSAppDEUIActions(): IPSAppDEUIAction[] | null;

  findPSAppDEUIAction(objKey: any): IPSAppDEUIAction | null;

  /**
   * 实体界面逻辑集合
   *
   * @type {IPSAppDEUILogic[]}
   */
  getAllPSAppDEUILogics(): IPSAppDEUILogic[] | null;

  findPSAppDEUILogic(objKey: any): IPSAppDEUILogic | null;

  /**
   * 实体门户部件分类集合
   *
   * @type {IPSAppPortletCat[]}
   */
  getAllPSAppPortletCats(): IPSAppPortletCat[] | null;

  findPSAppPortletCat(objKey: any): IPSAppPortletCat | null;

  /**
   * 实体主状态集合
   *
   * @type {IPSDEMainState[]}
   */
  getAllPSDEMainStates(): IPSDEMainState[] | null;

  findPSDEMainState(objKey: any): IPSDEMainState | null;

  /**
   * 实体操作标识集合
   *
   * @type {IPSDEOPPriv[]}
   */
  getAllPSDEOPPrivs(): IPSDEOPPriv[] | null;

  findPSDEOPPriv(objKey: any): IPSDEOPPriv | null;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 代码名称2
   * @type {string}
   */
  codeName2: string;

  /**
   * 实体服务接口代码标识
   * @type {string}
   */
  dEAPICodeName: string;

  /**
   * 实体服务接口代码标识2（复数）
   * @type {string}
   */
  dEAPICodeName2: string;

  /**
   * 实体服务接口标记
   * @type {string}
   */
  dEAPITag: string;

  /**
   * 属性组使用模式
   * @description 值模式 [实体服务接口属性组联合模式] {REPLACE：替换实体属性、 OVERWRITE：重定义实体属性、 EXCLUDE：排除属性组属性 }
   * @type {( string | 'REPLACE' | 'OVERWRITE' | 'EXCLUDE')}
   */
  dEFGroupMode: string | 'REPLACE' | 'OVERWRITE' | 'EXCLUDE';

  /**
   * 实体访问控制体系
   * @description 值模式 [系统权限控制体系] {1：运行子系统角色体系（默认）、 2：当前系统角色及实体角色 }
   * @type {( number | 1 | 2)}
   */
  dataAccCtrlArch: number | 1 | 2;

  /**
   * 实体数据访问控制方式
   * @description 值模式 [实体数据访问控制方式] {0：无控制、 1：自控制、 2：附属主实体控制、 3：附属主实体控制（未映射自控） }
   * @type {( number | 0 | 1 | 2 | 3)}
   */
  dataAccCtrlMode: number | 0 | 1 | 2 | 3;

  /**
   * 数据类型应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getDataTypePSAppDEField(): IPSAppDEField | null;

  /**
   * 默认实体数据导入
   *
   * @type {IPSAppDEDataExport}
   */
  getDefaultPSAppDEDataExport(): IPSAppDEDataExport | null;

  /**
   * 默认实体数据导入
   *
   * @type {IPSAppDEDataImport}
   */
  getDefaultPSAppDEDataImport(): IPSAppDEDataImport | null;

  /**
   * 默认实体打印
   *
   * @type {IPSAppDEPrint}
   */
  getDefaultPSAppDEPrint(): IPSAppDEPrint | null;

  /**
   * 动态实例标记
   * @type {string}
   */
  dynaInstTag: string;

  /**
   * 实体支持界面行为
   * @description 值模式 [实体界面操作行为] {1：建立、 2：更新、 4：删除 }
   * @type {( number | 1 | 2 | 4)}
   */
  enableUIActions: number | 1 | 2 | 4;

  /**
   * 表单类型应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getFormTypePSAppDEField(): IPSAppDEField | null;

  /**
   * 索引类型应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getIndexTypePSAppDEField(): IPSAppDEField | null;

  /**
   * 主键属性
   *
   * @type {IPSAppDEField}
   */
  getKeyPSAppDEField(): IPSAppDEField | null;

  /**
   * 逻辑名称语言资源
   *
   * @type {IPSLanguageRes}
   */
  getLNPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 逻辑名称
   * @type {string}
   */
  logicName: string;

  /**
   * 主状态属性集合
   *
   * @type {IPSAppDEField[]}
   */
  getMainStatePSAppDEFields(): IPSAppDEField[] | null;

  /**
   * 主信息属性
   *
   * @type {IPSAppDEField}
   */
  getMajorPSAppDEField(): IPSAppDEField | null;

  /**
   * 应用实体从关系集合
   *
   * @type {IPSAppDERS[]}
   */
  getMinorPSAppDERSs(): IPSAppDERS[] | null;

  /**
   * 组织标识应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getOrgIdPSAppDEField(): IPSAppDEField | null;

  /**
   * 实体名称
   * @type {string}
   */
  getPSDEName(): string | null;

  /**
   * 控制实体关系
   *
   * @type {IPSDER1N}
   */
  getPSDER1N(): IPSDER1N | null;

  /**
   * 系统图片资源
   *
   * @type {IPSSysImage}
   */
  getPSSysImage(): IPSSysImage | null;

  /**
   * 快速搜索属性集合
   *
   * @type {IPSAppDEField[]}
   */
  getQuickSearchPSAppDEFields(): IPSAppDEField[] | null;

  getRequestPaths(): string[] | null;

  /**
   * 本地存储模式
   * @description 值模式 [应用实体存储模式] {0：仅远程存储、 1：仅本地存储、 3：本地及远程存储、 4：DTO成员（无存储） }
   * @type {( number | 0 | 1 | 3 | 4)}
   */
  storageMode: number | 0 | 1 | 3 | 4;

  /**
   * 系统服务接口标记
   * @type {string}
   */
  sysAPITag: string;

  /**
   * 实体默认
   * @type {boolean}
   */
  defaultMode: boolean;

  /**
   * 启用实体主状态
   * @type {boolean}
   * @default false
   */
  enableDEMainState: boolean;

  /**
   * 提供过滤器相关行为
   * @type {boolean}
   */
  enableFilterActions: boolean;

  /**
   * 支持临时数据模式
   * @type {boolean}
   * @default false
   */
  enableTempData: boolean;

  /**
   * 支持界面建立
   * @type {boolean}
   */
  enableUICreate: boolean;

  /**
   * 支持界面修改
   * @type {boolean}
   */
  enableUIModify: boolean;

  /**
   * 支持界面删除
   * @type {boolean}
   */
  enableUIRemove: boolean;

  /**
   * 提供工作流相关行为
   * @type {boolean}
   */
  enableWFActions: boolean;

  /**
   * 主实体
   * @type {boolean}
   */
  major: boolean;
}
